// 角色管理模块

// 角色数据
const characters = {
    1: {
        id: 1,
        name: "钢铁侠",
        description: "Tony Stark，天才亿万富翁花花公子慈善家",
        skills: ["tech", "humor", "strategy"]
    },
    2: {
        id: 2,
        name: "黑寡妇",
        description: "Natasha Romanoff，精英间谍和复仇者",
        skills: ["espionage", "combat", "interrogation"]
    }
};

// 角色回复库
const characterReplies = {
    1: { // 钢铁侠
        default: [
            "你知道吗，我并不是说我要对这个世界负责，但我有责任让它变得更好。",
            "我的装甲？它不仅仅是一套衣服，它是一个技术奇迹。贾维斯，打个招呼。",
            "有时候你得先跑起来才能学会走路。创新就是这么回事。",
            "天才、亿万富翁、花花公子、慈善家。不过你可以直接叫我托尼。",
            "没有我的装甲，我依然是个天才。有了它？好吧，我就是不可战胜的。"
        ],
        tech: [
            "说到技术，我刚刚改进了我的反应堆设计，效率提高了12%。",
            "纳米技术是未来，我已经在Mark L装甲中全面应用了。",
            "我的实验室里有你从未见过的技术，想看看吗？",
            "星期五，展示一下我们最新的全息投影技术。"
        ],
        humor: [
            "我的幽默感？就像我的装甲一样，锋利而闪亮。",
            "为什么科学家不喜欢原子？因为它们会分裂！",
            "我开玩笑是因为我聪明，而你笑是因为你懂我。",
            "如果幽默是一种超能力，那我肯定是复仇者里最强的。"
        ],
        strategy: [
            "战斗不仅仅是力量，更是策略。我两者兼备。",
            "我的计划总是有备用计划，而备用计划还有备用计划。",
            "在战场上，一个聪明的决定胜过一百次盲目攻击。",
            "我设计的战甲不只是为了战斗，更是为了战术优势。"
        ]
    },
    2: { // 黑寡妇
        default: [
            "我的账本上有红色的记录。我想把它们抹掉。",
            "间谍工作不是靠蛮力，而是靠情报和精准。",
            "在我们这一行，信任是一种奢侈品。",
            "我总是跟在你们这些男孩后面收拾残局。总得有人负责。",
            "我不是超级英雄，我只是一个受过良好训练的间谍。"
        ],
        espionage: [
            "潜入敌方基地？那只是我的日常工作。",
            "一个好的间谍知道什么时候该隐藏，什么时候该行动。",
            "情报收集不仅仅是窃听，更是分析和预测。",
            "我曾经潜入过世界上最安全的设施，而且没人发现。"
        ],
        combat: [
            "战斗不仅仅是力量，更是技巧和时机。",
            "我学过世界上所有的格斗技巧，从柔道到咏春。",
            "在战斗中，最小的细节往往决定胜负。",
            "我的战斗风格？高效且致命。"
        ],
        interrogation: [
            "审讯不只是问问题，更是读懂对方的每一个细微动作。",
            "人们总是会泄露信息，即使他们不说话。",
            "我曾经让世界上最顽固的恐怖分子开口，只用了一个眼神。",
            "审讯的关键是控制对话的节奏和方向。"
        ]
    }
};

// 角色管理类
class CharacterManager {
    constructor() {
        this.currentCharacterId = 1;
        this.currentSkill = null;
        this.characterCards = document.querySelectorAll('.character-card');
        this.currentCharacterSpan = document.getElementById('current-character');
        this.skillsContainer = document.getElementById('skills-container');
        
        this.init();
    }
    
    init() {
        this.bindEvents();
        this.initializeSkills();
    }
    
    bindEvents() {
        // 角色选择事件
        this.characterCards.forEach(card => {
            card.addEventListener('click', () => {
                this.selectCharacter(parseInt(card.dataset.id));
            });
        });
    }
    
    selectCharacter(characterId) {
        this.characterCards.forEach(c => c.classList.remove('active'));
        document.querySelector(`.character-card[data-id="${characterId}"]`).classList.add('active');
        
        this.currentCharacterId = characterId;
        this.currentCharacterSpan.textContent = characters[characterId].name;
        this.currentSkill = null;
        
        // 更新技能按钮
        this.initializeSkills();
        
        // 触发角色切换
        this.onCharacterChange();
    }
    
    initializeSkills() {
        const character = characters[this.currentCharacterId];
        this.skillsContainer.innerHTML = '';
        
        character.skills.forEach(skill => {
            const skillButton = document.createElement('button');
            skillButton.className = 'skill-button';
            skillButton.textContent = window.utils.getSkillDisplayName(skill);
            skillButton.dataset.skill = skill;
            
            skillButton.addEventListener('click', () => {
                this.toggleSkill(skill, skillButton);
            });
            
            this.skillsContainer.appendChild(skillButton);
        });
    }
    
    toggleSkill(skill, skillButton) {
        // 切换技能选择状态
        document.querySelectorAll('.skill-button').forEach(btn => {
            btn.classList.remove('active');
        });
        
        if (this.currentSkill === skill) {
            this.currentSkill = null;
        } else {
            skillButton.classList.add('active');
            this.currentSkill = skill;
        }
        
        // 触发技能切换事件
        this.onSkillChange();
    }
    
    getCurrentCharacter() {
        return characters[this.currentCharacterId];
    }
    
    getCurrentSkill() {
        return this.currentSkill;
    }
    
    // 事件回调
    onCharacterChange() {}
    onSkillChange() {}
    
    // 生成角色回复
    generateReply(message) {
        const character = this.getCurrentCharacter();
        const skill = this.getCurrentSkill();
        const characterId = this.currentCharacterId;
        
        let replySet = characterReplies[characterId].default;
        
        // 选中技能回复
        if (skill && characterReplies[characterId][skill]) {
            replySet = characterReplies[characterId][skill];
        }
        
        // 关键词匹配
        const messageLower = message.toLowerCase();
        if (messageLower.includes('你好') || messageLower.includes('hi') || messageLower.includes('hello')) {
            return character.name + ": 你好！很高兴和你聊天。";
        }
        
        if (messageLower.includes('谢谢') || messageLower.includes('thank')) {
            return character.name + ": 不客气，随时为你服务。";
        }
        
        if (messageLower.includes('再见') || messageLower.includes('bye')) {
            return character.name + ": 再见，保持联系！";
        }
        
        // 随机选择一个回复
        return character.name + ": " + replySet[Math.floor(Math.random() * replySet.length)];
    }
}

// 导出角色管理器
window.characterManager = new CharacterManager();